﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace ORMDemo.Core.Mapping
{
    public static class DBMappingExtend
    {
        public static string GetMappingName<T>(this T type) where T:MemberInfo
        {
            if (type.IsDefined(typeof(MappingTableAttribute), true))
            {
                var tableAttribute = type.GetCustomAttribute<MappingTableAttribute>();
                return tableAttribute.GetMappingName();
            }
            else if (type.IsDefined(typeof(MappingTableAttribute), true))
            {
                var columnAttribute = type.GetCustomAttribute<MappingTableAttribute>();
                return columnAttribute.GetMappingName();
            }
            else
            {
                return type.Name;
            }
        }
        public static string GetMappingTableName(this Type type)
        {
            if (type.IsDefined(typeof(MappingTableAttribute), true))
            {
                var attribute = type.GetCustomAttribute<MappingTableAttribute>();
                return attribute.GetMappingName();
            }
            else
            {
                return type.Name;
            }
        }
        public static string GetMappingColumnName(this PropertyInfo prop)
        {
            if (prop.IsDefined(typeof(MappingColumnAttribute), true))
            {
                var attribute = prop.GetCustomAttribute<MappingColumnAttribute>();
                return attribute.GetMappingName();
            }
            else
            {
                return prop.Name;
            }
        }
    }
}
